home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 1.iso / ARGONET / PD / UTILITIES / ARMSI.SPK / !ARMSI / !HELP < prev    next >
Text File  |  1992-11-23  |  17KB  |  383 lines

  1. | > !Help
  2. |
  3. | Title         ArmSI application - Speed Indexer for Acorn RISC machines
  4. | Authors       J.Abbott & Nick Smith
  5. | Version       3.31H (21-Nov-92)
  6. | Status        Public Domain, no distribution restrictions
  7.  
  8. Welcome to the all-new !ArmSI application - it was developed from !SI
  9. v3.12 (written by 'J.Abbott') by Nick Smith to give a range of
  10. interesting machine speed indexes for Acorn RISC machines.
  11.  
  12. Versions postfixed by H (for Hack 8-) are modified by Nick Smith because
  13. !SI 3.12 was pretty poorly written I felt, and needed some work done
  14. in a few places (user interface, RAM speed checks, etc) Once I started
  15. on fixing the bugs, I began to think of lots of things to add to the
  16. program ...
  17.  
  18. Thanks go to Owen Smith for ideas, some tech information & helping test
  19. out some of the stranger hardware configurations. Thanks also to some
  20. wonderful beta-testers; Paul Fidler & Holger Klingspohr.
  21.  
  22. I would be most interested in talking to Mr Abbott about !SI, but he
  23. didn't bother to put his address in the original documentation - so I
  24. have no way of getting in contact with him ! For the original authors'
  25. comments - see the end of this file.
  26.  
  27. Note that to run the Dhrystones test you need ;
  28.   - Version of the SharedCLibrary v3.75 or greater
  29.   - The disc with !ArmSI in the drive (because it is a separate command)
  30.  
  31. Note that to run any FP computations you need ;
  32.   - Some version of the FPEmulator loaded
  33.  
  34. If you load some old SI file into !ArmSI, then many of the fields in
  35. the main window will not be available because that information wasn't
  36. saved by !SI. Also, if you load some SI/ArmSI file from another 
  37. machine, then remember to use 'Re-calculate' before playing around
  38. with any improvements.
  39.  
  40. Some example SI files are including for your interest - ranging from
  41. the lowest 1MB A310 (5900 Dhrystones) all the way up to my 'turbo'
  42. A5000 (over 25000 Dhrystones 8-) ... Note my A5000 can run at 16.6MHz
  43. RAM (*big* speed increase), but I don't currently have a RAM upgrade
  44. card that can hack it ...
  45.  
  46. Users of old !SI may notice that the option to turn DRAM refresh on
  47. or off has gone. In fact turning off DRAM is extremely dangerous -
  48. and on some types of system/RAM chips can completely corrupt your
  49. memory. So I decided to take the safe path, and remove all the code
  50. which turns DRAM refresh on or off - keep it set to the RISC OS
  51. default - you know it makes sense !
  52.  
  53. *** Wish list
  54.  
  55.   - Complete rewrite in C ?? This BASIC code is so disgusting !
  56.   - More accurate calculations of everything
  57.   - Support for VIDC20 8-)
  58.   - Some timings for the new FPA chip (I am sure most of the
  59.     indexes will be right off the window !)
  60.   - Standard Whetstone (FP-Dhrystone) test
  61.   - Proper filetype from Acorn
  62.   - Option to turn ARM600 write buffer & cache on/off
  63.   - BASIC/BASIC64 FP performance test
  64.   - ID for VIDC enhancer, as well as different graphics cards
  65.   - Disc I/O performance tests + index
  66.   - A decent BASIC benchmark - any offers ??
  67.  
  68. *** Known bugs
  69.  
  70. If you can help me track these down (or even give me reproducable
  71. circumstances) then I would be most grateful.
  72.  
  73.   - Sometimes the FPEmulator doesn't like being RMFaster'd, although
  74.     I cannot duplicate the problem on my machine.
  75.   - Sometimes stupid FP results are given - again I can't reproduce
  76.     the problem ... So if you see an EXP of 0.72 and a SIN of 11.12
  77.     then it is probably messed up !
  78.  
  79. *** Contacts
  80.  
  81. Please send me any bugreports, comments, ideas for new features, etc.
  82. I can be contacted at the following address, at least until Jul '94 ;
  83.  
  84. Nick Smith
  85. Churchill College
  86. Cambridge
  87. CB3 0DS                 nas20@uk.ac.cam.phx (JANET/Internet email)
  88.  
  89. *** Distribution
  90.  
  91. This software is 'Public Domain'. You may copy and distribute it
  92. without restriction - include it on magazine discs, with commercial
  93. products (eg, ARM3 upgrades), etc, etc. I you do include it with
  94. commercial hardware, I'd really like to know about it too.
  95.  
  96. *** Revision history
  97.  
  98. Modifications to v3.20H (05-Nov-92)
  99.   - Removed all line number references in BASIC code (first job in any
  100.     BASIC hack!)
  101.   - Made iconbar menu appear in correct place!
  102.   - Misc mods to templates
  103.   - Did new code to read RAM speed - old stuff was rubbish I think (at
  104.     least it never returned anything useful for >8MHz memory)
  105.   - Possibly removed RO2.xx compatibility - oh well 8-)
  106.   - Changed ROM speed reading code based on speed of memory speed (ie, 
  107.     memory system clock)
  108.  
  109. Modifications to v3.21H (07-Nov-92)
  110.   - Restructured application - moved Templates & Code to a 'Resources'
  111.     directory.
  112.   - Added 'Dhrystone' benchmark to application - uses standard Dhrystone
  113.     version 2.1 (May 25, 1988) with no optimisations
  114.     Full source is included, as is a Makefile for recompilation with
  115.     different settings
  116.   - Generally did lots of code tidying & documentation
  117.   - Re-did main 'System Information' window, renumbering icons as I went
  118.     to tidy up redraw (argh - icons should be numbered from 0 at top -> )
  119.   - Added 'Available ROM' (shows 5th column ROM info too)
  120.   - Added display of ROM speed (2,3,4 ticks, or Page mode access)
  121.   - Added 'IOEB chip set information'
  122.   - Added FPA coprocessor recognition
  123.   - Added 'Additional details:' section ;
  124.         RISC OS version
  125.         Video screen mode, resolution, colours & refresh rate
  126.         Unique machine ID reading
  127.         Floating point identification (Old FPE, New FPE, FPPC, FPA chip)
  128.         Dhrystone results (microseconds/loop, dhrystones/sec)
  129.   - Did all this silly documentation (!)
  130.   - Now wasn't all this more useful than going to a 'Use of the IBM 3084
  131.     mainframe' lecture ?? 8-)
  132.  
  133. Modifications to v3.22H (08-Nov-92)
  134.   - Generally wrote the support code for all the above features which
  135.     didn't get done yesterday ...
  136.   - Integrated the Dhrystone index into the application (or at least it
  137.     gets run by the main application)
  138.   - Added recognition of FPPC (Old Acorn FP card)
  139.   - Renumbered some more icons to fix icon delete/recreate problems
  140.   - Added snazzy 'machine identification' code which guesses your
  141.     machine type
  142.   - Recalibrated ARM instruction indexes based on 1.000 being an old
  143.     1MB A310 (MEMC1, 8MHz ARM2), rather than the previous 'perfect' ARM2
  144.     whatever that might have been !
  145.  
  146. Modifications to v3.23H (09-Nov-92)
  147.   - Fixed so that prompts for disc with Dhrystone command to be 
  148.     inserted (*before* video DMA turned off!)
  149.   - Reduced no. of Dhrystone loops so not so slow on ARM2
  150.   - Recalibrates old SI files when loaded so that 1.00 = 310, 8MHz ARM2
  151.   - Removed all the 'MOVNV R0,R0' instructions in app, now MOV R0, R0
  152.   - Added ARM250 processor recognition (for A3010/3020/4000/etc)
  153.   - Reads MEMC type from zero page in SVC mode (in case users/OS have
  154.     zero page protected)
  155.   - Open main window on a load operation of SI file
  156.   - Improved error messages & error handling (what sort of idiot defines
  157.     an error block of 64 bytes ?? sigh)
  158.   - Closes menu on saving via key press/mouse click
  159.   - Extended window widths to allow for the higher speeds that I am
  160.     getting ... Almost certainly not enough for the FPA when it arrives!
  161.  
  162. Modifications to v3.24H (10-Nov-92)
  163.   - Renamed to !ArmSI because I felt it was a more identifiable name,
  164.     and it also distinguishes the program from the original !SI app.
  165.   - Identifies ARM2as/ARM61 processors (cannot tell the difference)
  166.   - Identifies ARM600/610 or ARM600 processors
  167.   - Changed ROM speed terminology - should be 'n-cycles'
  168.   - Sent out to a few people for a little bit of testing ...
  169.   - New Sprites, and a !Sprites22 file.
  170.   - Now identifies A500 (A310 protoype), with a VIDC1 chip
  171.  
  172. Modifications to v3.25H (11-Nov-92)
  173.   - Improved !Sprites22, but they still aren't very good !
  174.   - Added some more improvements ;
  175.         *RMFaster BASIC on/off
  176.         *RMFaster FPEmulator on/off
  177.         ARM3 cache on/off
  178.     Yes - you can *RMFaster BASIC in the middle of a BASIC program
  179.     (well I was impressed!) Note that the FPEmulator can only be
  180.     RMFaster'd if you have it in ROM (RO3.xx owners)
  181.   - Made sure that all zero page reads are done from SVC mode
  182.   - Because of the new facilities, 3.25 cannot read the SI files
  183.     created with 3.20->3.24 (although it can read 1.xx, 2.xx and
  184.     pre 3.20), because it seemed too much effort - there hasn't
  185.     been a public release yet, and there is a new file format every
  186.     day !
  187.   - ADJUST-click on icon bar open FP info window
  188.  
  189. Modifications to v3.26H (13-Nov-92)
  190.   - Now shouldn't moan on startup if you have no FPEmulator module
  191.     present.
  192.   - Strange problem with DRAM refresh changing at random points -
  193.     think it fixed now. Probably due to Mr.Abbott's enthusiastic
  194.     use of real variables when he should have been using integers!
  195.   - A500 test had to be changed. Looks like the OS frigs the RTC
  196.     calls 8-( So now uses the keyboard ID, instead of the RTC
  197.     precision.
  198.   - Memory bandwidth/Video bandwidth/etc calculations should now
  199.     be more accurate. The memory bandwidth is based on 1 n-cycle +
  200.     3 s-cycle RAM access, and so will actually give lower results
  201.     than previous versions.
  202.     The video/dram refresh calculations now take into account the
  203.     refresh rate of the screen (!) and also use the better memory
  204.     bandwidth value.
  205.   - Slightly more accurate video refresh code, but it looks like I
  206.     am underestimating both refresh rate & video bandwidth values
  207.     slightly ...
  208.   - Far too much debugging to get the code to work on a 1MB, RO2,
  209.     MEMC1, ARM2 A310 8-(
  210.  
  211. Modifications to v3.27H (16-Nov-92)
  212.   - Now reads total RAM size sensibly (uses OS_ReadMemMapInfo)
  213.     to correctly identify >4MB
  214.   - Moved all the Bxx% variables (for bar icon nos) into an array
  215.   - Lots of code documentation, tidying up & LOCAL variables ...
  216.     If you think the code is messy now, you should have seen 3.12 !
  217.   - Now echoes unrecognized key presses with Wimp_ProcessKey
  218.   - Paged mode access ROMs option is always greyed out under OS3
  219.  
  220. Modifications to v3.30H (18-Nov-92)
  221.   - Better ARM610 identification (processor type=&61)
  222.   - Complete removal of DRAM refresh code (serious side effects can
  223.     occur) Still reports the DRAM refresh status, but doesn't let
  224.     you change it.
  225.   - Replaced the DRAM refresh menu option with one for Video DMA,
  226.     so that during tests you can either have the video DMA turned off
  227.     or on. Old versions always turned off Video/Sound DMA for max
  228.     speed ratings !
  229.   - RAM size now displays page size, and number of pages. (eg, ARM600
  230.     has 4K pages, while old MEMC1/1a machines will have 8, 16 or
  231.     32K pages)
  232.   - Final beta-release before the public release.
  233.  
  234. Modifications to v3.31H (21-Nov-92)
  235.   - Some final small changes for the first public release (wow!) ;
  236.   - ID's PCATS graphics enhancer card
  237.   - Clicks to open windows opens them at top of window stack
  238.   - Compiled a nice collection of SI files from different machines
  239.   - Fixed 5th Column ROM reading code (thanks to Owen making me my
  240.     own custom 5th column ROM!)
  241.   - Increased the number of Dhrystone loops performed from 50,000
  242.     to 75,000 - my A5000 at top speed goes too fast for 50,000 to
  243.     have accurate results !! 8-)
  244.   - Public release #1 to Newcastle info-server & comp.binaries.acorn
  245.  
  246. *** Techie details
  247.  
  248. Below I briefly detail how each section of SI gives its results - for
  249. more details look at the code. The important routines are PROCcalcsi
  250. and PROCdisplaysi.
  251.  
  252. Available RAM - MEMC tells you the page size, and so total RAM can be
  253.         easily worked out. Uses OS_ReadMemMapInfo call.
  254.  
  255. Available ROM - tricky ... Currently we just guess based on the OS 
  256.         version.
  257.  
  258. 5th Column ROMs - you don't notice this feature unless you have
  259.         5th column ROMs, but the program finds the number of extension
  260.         ROMs with Podule_ReturnNumber, and then counts the total size
  261.         of code/data using Podule_EnumerateChunksWithInfo - so you
  262.         get the cumulative total of data - not the capacity of the 
  263.         ROMs when full ...
  264.  
  265. ROM Speed - we know the number of n-cycles per ROM access (from MEMC),
  266.         so this is multiplied by the current RAM Speed.
  267.  
  268. RAM Speed - the operating system works this out on startup, and so we
  269.         just ask nicely (zero page location).
  270.  
  271. DRAM refresh - a MEMC returned result (you use OS_UpdateMEMC SWI for
  272.         all these MEMC read/writes)
  273.  
  274. MEMC type - zero page location gives MEMC1 or MEMC1a type, as worked
  275.         out by the OS.
  276.  
  277. IOC type - unknown - call it IOC1 !
  278.  
  279. IOEB type - under RO3.xx an OS_ReadSysInfo call returns this, and 
  280.         whether one is present or not. IOEB can only exist on RO3.xx
  281.         and greater machines.
  282.  
  283. VIDC type - assume a VIDC1a (most machines), unless an A500 computer.
  284.         The A500 is ID'd using the fact that 99% of all the A500s 
  285.         have RTCs with 30 second precision. A500s have VIDC1 chips.
  286.         Actually this test doesn't work because of the OS simulating
  287.         the RTC 8-( Instead we use the keyboard ID byte ... If you
  288.         have an A500 with a new keyboard - tough!
  289.  
  290. ARM type - see the assembler code at the end of the main program.
  291.         ARM1 chips don't do multiply, ARM2 chips don't do SWP 
  292.         instructions, ARM250 chips don't have coprocessor 15
  293.         (internal), and all later chips can be ID'd from a status
  294.         register inside coprocessor 15.
  295.  
  296. FPA type - Again, a coprocessor transfer as defined in the Acorn
  297.         FP specs (see PRMs) which can ID software/hardware FP
  298.         details.
  299.  
  300. Periph Ctrlr - OS_ReadSysInfo call under RO3 can ID the 82C710 or
  301.         82C711 peripheral controller chip which handles the IDE
  302.         interface, etc.
  303.  
  304. LCD ASIC - only present in A4 portables, this chip does the
  305.         fancy 15-greyscale display, and is ID'd using OS_ReadSysInfo
  306.  
  307. RO ver - Read from OS_Byte,0,0
  308.  
  309. Video screen mode - read from the BASIC 'MODE' command, and a 
  310.         selection of OS_ReadModeVariable calls
  311.  
  312. Unique machine ID - only present on modern RO3 machines (A3010/3020/
  313.         A4000/5000/A4/etc) read using OS_ReadSysInfo call
  314.  
  315. Details of most of the calls listed above can be found in the RISC OS3
  316. Programmers Reference Manual, available from your local Acorn Dealer 8-)
  317.  
  318. ========================================================================
  319.  
  320. Original Authors Notes:-
  321.  
  322.  1) Instructions timings are accurate to within:
  323.  
  324.                  4 * MCLK
  325.                  --------   
  326.                      i
  327.  
  328.           where 
  329.                i    is the number of instructions tested
  330.                MCLK is the system clock (125 nS on an 8 MHz machine)
  331.  
  332.     ARM instructions are therfore calculated to within 2 nS +- 2%
  333.  2) ARM Speed in MIPS is calculated as the average number of each
  334.     instruction Group in a test sample of 1000 instructions
  335.  3) IOC and VIDC types remain Unknown at present
  336.  4) Checks are made for all processors known to date. ie. ARM 1,2 and 3
  337.  5) Interrupts and DMA requests are stopped whilst calculations are
  338.     taking place
  339.  6) Looped instructions are calculated as one instruction of the specific
  340.     Group + one Group 1 + one group 4 instruction
  341.  7) Instruction timings are calculated during Video Flyback, and are
  342.     therefore dependant on the Video Flyback period and DRAM refresh
  343.     (large modes with no vertical boarders will affect results)
  344.  8) Group 1a results on ARM 2's do not take account of the hardware bug
  345.     (instructions take 24 S cycles rather than the maximum of 16)
  346.  9) Instruction indexes are relative to a perfect ARM 2 running at 8 MHz
  347. 10) FPU instruction speeds are calculated by either 3, 16 or 80
  348.     instructions depending upon the instruction in question.  
  349. 11) FPU instructions are calculated to within 167 nS, 31 nS or 6 ns +- 2%
  350.     dependent upon the instruction
  351. 11) FPU indexes include both register values and immediate values in the
  352.     form #1.0
  353. 12) FPU speed in FLOPS is calculated as the total number of instructions
  354.     divided by the time taken, this does not take account of common
  355.     instructions
  356. 13) All FPU calculations with the exception of STF and LDF are done in
  357.     extended precision.  STF and LDF are packed decimal precision
  358.  
  359.  
  360.  
  361. Modifications to v1.00
  362.   - Group 4 index
  363.   - Looped instruction indexes
  364.  
  365. Modifications to v2.00
  366.   - FPU indexes
  367.  
  368. Modifications to v3.00
  369.   - Improved icon updating
  370.  
  371. Modifications to v3.04
  372.   - Check FPU/FPEmulator present
  373.  
  374. Modifications to v3.07
  375.   - Improved Group 4 looped instruction index
  376.   - Improved FPU instruction timings
  377.  
  378. Modifications to v3.09
  379.   - Improved window handling
  380.   - Modified bandwidth calculations for ARM 2 machines
  381.  
  382. ========================================================================
  383.